package com.study.bigdata.spark.core.wc

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object Scala04_WordCount {
  def main(args: Array[String]): Unit = {
    // TODO spark

    // 1.添加依赖
    // 2.获取spark的连接 [*]表示使用当前机器最大核数
    val conf = new SparkConf().setMaster("local[*]").setAppName("WordCount")
    val sc = new SparkContext(conf)

    val value: RDD[String] = sc.textFile("data/word.txt")
    // 3.读取文件
    val lines = value
    // 4.将文件中数据进行分词
    val words: RDD[String] = lines.flatMap(_.split(" "))
    val wordToOne: RDD[(String,Int)] = words.map(
      word =>{
        println("xxxxxxxxx")
        (word,1)
      })

    // spark框架：按照key分组，对相同的key的value进行reduce
    val wordCount:RDD[(String,Int)] = wordToOne.reduceByKey(_+_)



    // 7.将统计结果打印到控制台
    // foreach方法其实是Scala集合（单点）的方法
    val tuples = wordCount.collect()
    tuples.foreach(println)

    // foreach其实是RDD(分布式)的方法 叫算子 为了区分Scala方法
    wordCount.foreach(println)
    sc.stop()

  }

}
